package com.maxbill.singleton;


import lombok.extern.log4j.Log4j2;

/*
 * 单例模式-懒汉模式-双重检查锁DCL(线程安全)
 * 特点：线程安全，调用效率不高，但是能延时加载
 * 优点：进行双重检查线程安全
 * 缺点：每次获取实例都要进行非空检查，系统开销大，为保证线程安全，每次访问时都要同步，会影响性能，且消耗更多的资源
 */
@Log4j2
public class SingletonLazySafeMode {

    //保证 instance 在所有线程中同步
    private static volatile SingletonLazySafeMode instance = null;

    private SingletonLazySafeMode() {
    }


    public static synchronized SingletonLazySafeMode getInstance() {
        if (instance == null) {
            instance = new SingletonLazySafeMode();
        }
        return instance;
    }

}
